Knowledge base search utility

ABSTRACT

A method is disclosed. The method includes performing a first search in response to initiating a communication session between an agent and a customer. The first search is performed using first data, attributes of a service interaction, and second data. The first data represents a second search requested by the customer, and the second data represents items viewed by the customer from among first results of the second search. Second results of the first search are displayed.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present patent application is a continuation of U.S. patentapplication Ser. No. 12/144,114, filed on May 2, 2008, entitled“Knowledge Base Search Utility” and is incorporated by reference hereinin its entirety and for all purposes as if completely and fully setforth herein.

BACKGROUND

Agent interfaces are becoming increasingly sophisticated in theirability to allow access to numerous types of application data and/orapplication systems across multiple forms of communication. For example,a typical customer service application may include an agent interface toallow a customer service agent to navigate among a variety of types ofdata related to a customer and to products. Such product data mayinclude a knowledge base or other database of product information, whilecustomer data may include contact information, service requestinformation, order information, activity information, and so on. Acustomer service agent interacting with a customer may need to navigatequickly all of these types of information during, for example, thecourse of a single telephone conversation. Additionally, a subset ofboth the customer data and the product data may be available to thecustomer for self-guided retrieval of information without agentintervention.

In order to provide personalized service, it is desirable that customerservice agents appear to “know” the customer immediately when startingan interaction and throughout its duration. Since customer servicecenters receive a large volume and variety of customer interactionsduring a typical day, each agent needs to have quick access to importantcustomer information, such as contact name, account number, phonenumber, and so on. Additionally, customer service agents need to find,in the most efficient manner possible, the information needed by thecustomer. When an agent wastes time by fumbling with an agent interfacefor a search engine, suggesting to a customer an inapplicable resource,or offering a resource that the customer has already viewed anddismissed, costs are increased. These costs come in both the form ofagent time and the form of customer dissatisfaction.

SUMMARY

A method is disclosed. The method includes performing a first search inresponse to initiating a communication session between an agent and acustomer. The first search is performed using first data, attributes ofa service interaction, and second data. The first data represents asecond search requested by the customer, and the second data representsitems viewed by the customer from among first results of the secondsearch. Second results of the first search are displayed.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention may be better understood, and its numerousobjects, features and advantages made apparent to those skilled in theart by referencing the accompanying drawings.

FIG. 1 provides an example of an agent interface including a both a chatutility and a search utility in accordance with one embodiment of thepresent invention.

FIG. 2 is a flowchart describing one embodiment of a search utility inaccordance with the present invention.

FIG. 3 shows actions taken when operating a search utility in responseto agent input in accordance with one embodiment of the presentinvention.

FIG. 4 shows actions taken to support a search utility in response to anincoming communication event in accordance with one embodiment of thepresent invention.

FIG. 5 shows actions taken when updating the persistent dashboardoperating a search utility in conjunction with an outgoing communicationcommand in accordance with one embodiment of the present invention.

FIG. 6 is a diagram of a layered architecture in which an embodiment ofthe search utility can be implemented.

FIG. 7 is a diagram of object layers and object definitions according tothe layered architecture of FIG. 6.

FIG. 8 is a block diagram illustrating a computer system suitable forimplementing embodiments of the present invention.

FIG. 9 provides an example of a customer interface including a searchutility and a chat utility in accordance with one embodiment of thepresent invention.

The use of the same reference symbols in different drawings indicatessimilar or identical items. While the invention is susceptible tovarious modifications and alternative forms, specific embodimentsthereof are shown by way of example in the Drawings and are describedherein in detail. It should be understood, however, that the Drawingsand Detailed Description are not intended to limit the invention to theparticular form disclosed. On the contrary, the intention is to coverall modifications, equivalents, and alternatives falling within thescope of the present invention as defined by the appended Claims.

DETAILED DESCRIPTION

For a thorough understanding of the subject invention, refer to thefollowing Detailed Description, including the appended Claims, inconnection with the above-described Drawings. Although the presentinvention is described in connection with one or more embodiments, theinvention is not intended to be limited to the specific forms set forthherein. On the contrary, it is intended to cover such alternatives,modifications, and equivalents as can be reasonably included within thescope of the invention as defined by the appended Claims.

In the following description, for purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the invention. It will be apparent in light of thepresent disclosure, however, to one skilled in the art that theinvention can be practiced without these specific details.

References in the specification to “one embodiment” or “an embodiment”mean that a particular feature, structure, or characteristic describedin connection with the embodiment is included in at least one embodimentof the invention. The appearances of the phrase “in one embodiment” invarious places in the specification are not necessarily all referring tothe same embodiment, nor are separate or alternative embodimentsmutually exclusive of other embodiments. Moreover, various features aredescribed which may be exhibited by some embodiments and not by others.Similarly, various requirements are described which may be requirementsfor some embodiments but not other embodiments.

The present invention addresses several shortcomings of existingtechniques. Specifically, one embodiment of the present inventionprovides for the search and retrieval of stored information based onattributes of a customer, attributes of a service interaction betweenthe customer and an enterprise, and items viewed by a customer. Usingone embodiment of the present invention, a search can be triggered by acommunication event or by a search request from an agent, for example,and search results (and their display) tuned on the basis of itemspreviously viewed by the customer and the agent.

FIG. 1 shows an agent interface 102 presented for agent use by a webbrowser client 104. In one embodiment, no client software other than aweb browser is needed to run the agent interface for the hostapplication. Agent interface 102 includes a communication toolbar 110,screen tabs 120, a persistent dashboard 130, a chat window 180 and abase view 140. Base view 140 contains a knowledge base search window160. Communication toolbar 110 and screen tabs 120 are not essential forthe operation of a knowledge base search window 160. Knowledge basesearch window contains a reference list 166 and a displayed reference168, as well as a reject button 170. Base view 140 represents a displaywindow in which application data are displayed, such that the dashboard130 provides context information related to the application data.

Communication toolbar 110 enables an agent to communicate via multipletypes of communication channels, such as e-mail, telephone, facsimile,text chat and wireless messaging. Screen tabs 120 enable an agent tonavigate among various types of application data.

Chat window 180 supports communication between a customer and an agentthrough text-based messaging, which can include transmission of messagescontaining a markup language such as HTML, for example. In someembodiments, the chat window can additionally support moving video andaudio communication. A customer information pane 162 providesinformation relevant to a customer interaction, such as a username 171,which may contain any identifier used to communicate with a customer,such as a customer's name, username or handle. An area 173 broadlyrepresents a product or service type of interest to the customer on thebasis of the customer's indication of interest or data previously storedin relation to the customer. A subarea 174 more narrowly defines theproduct or service type of interest to the customer on the basis of thecustomer's indication of interest or data previously stored in relationto the customer. A product 175 defines the specific offering of interestto the customer on the basis of the customer's indication of interest ordata previously stored in relation to the customer. A summary 176provides a brief description of the problem that the customer is tryingto solve. KB visited 177 indicates the portions of a knowledge base thatthe customer has reviewed, typically before communicating with a liveagent. An action pulldown menu 167 enables an agent to quickly accessactions that may be relevant to the customer's situation, such aspreparation of a service request. A chat text entry box 172 allows theagent to enter text for transmission to a customer.

A session window 178 displays a record of transmissions between an agentand a customer. In the chat window, highlighted text 179 can be selectedwith a mouse, for a cut-and-paste or a search operation. A toolbar 165allows for the placement of buttons, such as smart search button 164.

In the exemplary embodiment shown in FIG. 1, persistent dashboard 130includes various data fields such as contact name 131, company 132,phone 133, e-mail 134, current computer 135, interest 136, and customertime 137. Persistent dashboard 130 also includes customer history combobox 138, which enables the agent to view in base view 140 the history ofprevious communications with the customer whose information is displayedin persistent dashboard 130. As mentioned above, the data fieldsincluded in a persistent dashboard, such as persistent dashboard 130,are configurable according to the present invention. For example, anaccount number, customer's local time, or other relevant contextinformation can be selected to be displayed in persistent dashboard 130.Furthermore, customer dashboard 130 may be configured to include, forexample, Previous and Next buttons (not shown) to enable scrolling toand from information related to previous activity of the agent using thehost application, such as calls that the agent had previously attendedto during a session using the host application.

In the example embodiment shown, persistent dashboard 130 is visible asa separate frame below the communications toolbar 110 and screen tabs120 and above the frame including base view 140. In base view 140, theagent can navigate among various types of application data and/ordifferent screens and view of agent interface 102, while persistentdashboard 130 provides a persistent view of context information relatedto the application data presented in base view 140. For example, thecustomer service agent can quickly navigate to information related tothe active customer in persistent dashboard 130 by selecting from thecombo box 138 of persistent dashboard 130. The list of views to whichthe agent can navigate is customizable and, for example, may include thefollowing:

-   -   Contact—Activities (default)    -   Contact—Activity Plans    -   Contact details    -   Contact—Service Requests    -   Contact—Agreements    -   Contact—Entitlements    -   Contact—Campaigns    -   Contact—Opportunities.

When a view is selected, one or more records related to the activecustomer are displayed in base view 140.

In one embodiment of the present invention, a website for a customerprovides access to a repository of information in a knowledge base. Asis described with respect to FIG. 9, a customer interface provides asearch utility for allowing the customer to search the knowledge baseand retrieve data. Searches are optionally tuned to refine results onthe basis of data relating to the customer. During the customer'sinteraction with the search utility, data is gathered, both from thecustomer and from a database, which is used to populate persistentdashboard 130 and customer information pane 162. The data gathered topopulate persistent dashboard 130 and customer information pane 162 isalso used to refine search results performed by an agent at the requestof the customer.

When the customer requests a chat with an agent, persistent dashboard130 and customer information pane 162 are populated with the gathereddata that is passed in the chat request. A search is also performed,using the data from persistent dashboard 130 and customer informationpane 162. Reference list 166 is populated with the results of thesearch, and an agent can select a reference to be shown in a window asdisplayed reference 168. The search performed to populate reference list166 and the references displayed (as well as their manner of display)are configurably altered on the basis of the searches performed by thecustomer prior to the initiation of a chat session and the resultsviewed by the customer.

The context information displayed in persistent dashboard 130 is changedin response to certain actions, which are referred to herein as changesin context. For example, a change in context can include receiving acommunication event, obtaining data entered by a customer, focusing on adata record, and selecting a search results record. Actions such asswitching to a new screen or view of the agent interface, or viewing adifferent type of application data, are not considered to triggerchanges in context unless accompanied by one of the aforementionedcontext-changing actions. In one embodiment of the present invention, anew search is performed and references displayed in reference list 166are updated in response to configurably-selected changes in context.Changing of the view or viewing of a different type of data at basewindow 140 followed by selection of an update button (not shown) on thepersistent dashboard 130 also changes the context of the dashboard.

FIG. 9 provides an example of a customer interface including a searchutility and a chat utility in accordance with one embodiment of thepresent invention. A web browser client 904 supports the presentation ofa chat window 980 and a knowledge base search window 960 containedwithin a customer interface 902. In one embodiment, no client softwareother than a web browser is needed to run the customer interface 902 forthe host application. Knowledge base search window 960 contains areference list 966 and a displayed reference 968, as well as a rejectbutton 970. Reject button 970 is an optional feature that will not bepresent in all embodiments of the present invention.

Chat window 980 supports communication between a customer and an agentthrough text-based messaging, as described above. In some embodiments,the chat window can additionally support live video and audiocommunication. A customer information pane 962 provides an interface fora client to enter information relevant to a customer interaction, suchas a username 971, which may contain any identifier used to communicatewith a customer, such as a customer's name, username or handle. An area973 broadly represents a product or service type of interest to thecustomer on the basis of the customer's entry or selection of aninterest or data previously stored in relation to the customer. Asubarea 974 more narrowly defines the product or service type ofinterest to the customer on the basis of the customer's entry orselection of an interest or data previously stored in relation to thecustomer. A product 975 defines the specific offering of interest to thecustomer on the basis of the customer's entry or selection of aninterest or data previously stored in relation to the customer. Asummary 976 provides a brief description of the problem that thecustomer is encountering. All of this information, as provided by thecustomer or updated in reference to a database, can be used to populatepersistent dashboard 130 and customer information pane 162. A sessionwindow 978 displays a record of transmissions between an agent and acustomer during a chat session.

Knowledge base search window 960 contains a reference list 966 and adisplayed reference 968, as well as a search text entry box 982 and atoolbar 965 allows for the placement of buttons, such as search button964, chat request button 990 and reject button 970. A search text entrybox 982 allows a customer to enter search terms.

When a customer enters a search string in search text entry box 982 andpresses search button 964, results are returned to reference list 966. Acustomer can click on a result in reference list 966 to display areference. If the displayed reference 968 proves unsatisfactory, thecustomer may click another reference in reference list 966 for display.In one embodiment, an optional reject button 970 is included, such thata customer can flag a reference as being inadequate to the customer'sneeds. If the customer requests chat with an agent by pressing chatrequest button 990, persistent dashboard 130 and customer informationpane 162 are populated with the gathered data from customer informationpain 962. A search is also performed, using the data from persistentdashboard 130 and customer information pane 162. Reference list 166 ispopulated with the results of the search, and an agent can select areference to be shown in a window as displayed reference 168. The searchperformed to populate reference list 166 and the references displayed(as well as their manner of display) are configurably altered on thebasis of the searches entered by the customer through search text entrybox 972 prior to the initiation of a chat session and the results viewedby the customer as displayed reference 968, and possibly rejected by thecustomer using optional reject button 970.

Once populated, the search results remain in knowledge base searchwindow 160 until another search occurs or until a Clear Search commandis executed, even when the display window including knowledge basesearch window 160 is closed. Search data in knowledge base search window160 is updated so that, when the agent re-opens a display window forknowledge base search window 160, the context information pertains tothe currently active customer and application data.

Additionally, knowledge base search window 160 may be configured toinclude a button in a display window to update dashboard data displayedwith information related to application data also being displayed byagent interface 102.

In one embodiment, knowledge base search window 160 is configured toinclude an Open Search icon (not shown) and a Close Search icon (notshown) that can be selected to open and knowledge base search window160. In this embodiment, the commands Open Search, Close Search, andClear Search can also be accessed from an application menu (not shown)using a View command.

In one embodiment, when an incoming communication arrives andnotification is provided to the agent by communications toolbar 110,persistent dashboard 130 is automatically updated with key informationabout the caller, such as the contact name and customer's local time.While this information enables the agent to greet the customer using theproper salutation, the host application retrieves further informationabout the contact and displays customer-specific information. Aspersistent dashboard 130 is being populated, a search is also performed,using the data from persistent dashboard 130 and customer informationpane 162. Reference list 166 is populated with the results of thesearch, and an agent can select a reference to be shown in a window asdisplayed reference 168.

In one embodiment, during a customer interaction session, the agent mayhighlight any text displayed in agent interface 102, such as highlightedtext 179 in chat session window 178 and press smart search button 164 toexecute a fresh search. Other areas that can supply searchable textinclude knowledge base search window 160, persistent dashboard 130 andcustomer information pane 162. In one embodiment, results viewed by theagent as displayed reference 168 (or by a customer as displayedreference 968) are excluded from display in reference list 166.Exclusion from display can include total exclusion, wherein thereference is not listed in reference list 166 or partial exclusion,where the reference is displayed in reference list 166 but itsvisibility is reduced by a lighter text font or inclusion at the bottomof reference list 166.

FIG. 2 is a flowchart describing one embodiment of a search utility inaccordance with the present invention. After starting, the processproceeds to step 202, which depicts customer interface 902 determiningwhether a customer has requested a search through search text entry box982 or search button 964. If customer interface 902 determines that acustomer has requested a search through customer interface 902, then theprocess next moves to step 204. Step 204 illustrates customer interface902 logging the search input. The process then proceeds to step 206,which depicts the application server, which will be described below withrespect to FIG. 3, executing a search of a knowledge base in response toreceipt of the logged search request from customer interface 902. Thedata gathered to populate persistent dashboard 130 and customerinformation pane 162 is optionally used to refine search resultsperformed at the request of the customer. The process next moves to step208. Step 208 illustrates customer interface 902 displaying a list ofsearch results as a reference list 966 in knowledge base search window960.

The process then proceeds to step 210, which depicts customer interface902 determining whether a result has been selected from among referencelist 966 in knowledge base search window 960. If customer interface 902determines that a result has been selected from among a reference list966 in knowledge base search window 960, then the process next moves tostep 212. Step 212 depicts customer interface 902 displaying a result inthe form of displayed reference 968. The process then proceeds to step213, which depicts customer interface 902 logging the display of theresult displayed in step 212. The process next moves to step 214. Step214 illustrates customer interface 902 determining whether a new resulthas been selected from among reference list 966 in knowledge base searchwindow 960. If customer interface 902 determines that a new result hasbeen selected from among reference list 966 in knowledge base searchwindow 960, the process then proceeds to step 216, which depictscustomer interface 902 logging the rejection of the result displayed instep 212. The process next moves to step 218.

Step 218 illustrates customer interface 902 displaying thenewly-selected result from step 214 in the form of displayed reference968. The process then returns to step 213, which is described above.Returning to step 214, if customer interface 902 determines that a newresult has not been selected from among reference list 966 in knowledgebase search window 960, the process then proceeds to step 215, whichdepicts customer interface 902 determining whether a chat has beenrequested using chat request button 990. If customer interface 902determines that a chat has not been requested using chat request button990, then the process next moves to step 217. Step 217 depicts customerinterface 902 determining whether a customer has requested a new searchthrough search text entry box 982 or search button 964. If customerinterface 902 determines that a customer has requested a new searchthrough customer interface 902, then the process returns to step 204,which is described above. If customer interface 902 determines that acustomer has not requested a new search through customer interface 902,then the process returns to step 214, which is described above.

Returning to step 215, if customer interface 902 determines that a chathas been requested using chat request button 990, then the process thenproceeds to step 220, which depicts customer interface 902 displaying await message to a customer. The process next moves to step 222. At step222, the process transitions from a customer-search phase to anagent-search phase. Step 222 illustrates customer interface 902determining whether the chat request of step 215 has been accepted. Ifcustomer interface 902 determines that the chat request of step 215 hasbeen accepted, then the process next proceeds to step 224, which depictsan application server, which will be described below with respect toFIG. 3, executing a search of a knowledge base in response to receipt ofthe chat request from customer interface 902. The data gathered topopulate persistent dashboard 130 and customer information pane 162 isalso used to refine search results performed at the request of thecustomer. The process next moves to step 226.

Step 226, which is optional and will not be present in some embodimentsof the present invention, illustrates the customer interface 102performing an elimination from the search results created in step 224 ofany references previously displayed to a user of customer interface 902as displayed reference 968 in step 212 or step 218 and any referencespreviously displayed to a user of customer interface 102 as displayedreference 168 in step 232. Such elimination can include a removal fromreference list 166 or a simple obscuring of the reference, for instanceby changing a font color in reference list 166. The process thenproceeds to step 228, which depicts customer interface 102 displayingresults of the search performed in step 224, including exclusions ifperformed in step 226, as reference list 166. The process next moves tostep 230.

Step 230 illustrates agent interface 102 determining whether a resulthas been selected from among reference list 166 in knowledge base searchwindow 160. If agent interface 102 determines that a result has beenselected from among a reference list 166 in knowledge base search window160, then the process next moves to step 232, which depicts agentinterface 102 displaying a most recently-selected result in the form ofdisplayed reference 168. The process then proceeds to step 233, whichdepicts agent interface 102 logging the display of the result displayedin step 232. The process next moves to step 235. Step 235 illustratesagent interface 102 determining whether a new result has been selectedfrom among reference list 166 in knowledge base search window 160. Ifagent interface 102 determines that a new result has been selected fromamong reference list 166 in knowledge base search window 160, theprocess then returns to step 232, which is described above.

If, however, agent interface 102 determines that a new result has notbeen selected from among reference list 166 in knowledge base searchwindow 160, the process then proceeds to step 234, which depicts agentinterface 102 determining whether a new search has been requested on thebasis of highlighted text 179 and smart search button 164. If agentinterface 102 determines that a new search has been requested on thebasis of highlighted text 179 and smart search button 164, then theprocess proceeds to step 236. Step 236 depicts agent interface 102logging the search request. The process then returns to step 224, whichis described above.

Returning to step 234, if agent interface 102 determines that a newsearch has not been requested on the basis of highlighted text 179 andsmart search button 164, then the process proceeds to step 238, whichdepicts agent interface 102 determining whether the current session hasbeen terminated. If agent interface 102 determines that the currentsession has not been terminated, then the process returns to step 232,which is described above. If agent interface 102 determines that thecurrent session has been terminated, then the process ends.

FIG. 3 shows actions taken when operating a search utility in responseto agent input in accordance with one embodiment of the presentinvention. When an agent requests a search using smartsearch button 164(or in response to accepting an incoming chat, as depicted in FIG. 5,below), a search is initiated, which in turn updates base view 140. Inaction 3.1, the agent initiates a search by, for example, selectinghighlighted text 179 and actuating smartsearch button 164 (or byaccepting an incoming chat). In action 3.2, functional control module106, which is actually housed on application server 340 but displayedseparately for purposes of clarity, passes a request to access data toweb server 330. In action 3.3, web server 330 passes the request toaccess application data to application server 340. Application server340 includes a knowledge base search business service (not shown) toassist with obtaining data to push to base view 140. As noted by thebroken arrow connecting web server 330 to application server 340,intermediate software modules may be present between web server 330 andapplication server 340.

Application server 340 accesses application data 350, such as customerdata from a customer, previous search queries by agent and customer anditems viewed by customer and agent, in action 3.4 a and performs asearch of knowledge base 360 in Action 3.4 b. As noted by the brokenarrows connecting application server 340 to application data 350 andknowledge base 360, several intermediate modules may be present, such asa database server (not shown). Application server 340 provides searchresults to web server 330 in action 3.5, and web server 330 providessearch results to web browser client 104 in action 3.6. In action 3.7,functional control module 106 updates data in base view 140 with areference list 166 in knowledge base search window 160. In action 3.8,functional control module 106 updates any additional application datadisplayed by agent interface 102.

FIG. 4 shows actions taken to support a search utility in response to anincoming communication event in accordance with one embodiment of thepresent invention. In action 4.1, the customer places a request forcustomer support, such as chat, using media device 420 supporting chatwindow 980. A request for customer support will typically include anyknown information about the customer, including data gathered topopulate persistent dashboard 130 and customer information pane 162, aswell as any search strings resulting from search input by the customerat search entry text box 982 and any results viewed as displayedreference 968.

The request for customer support is provided via a series ofintermediate software modules (not shown) to communication server 410.Communication server 410 receives the event and provides an eventresponse in action 4.3 to web server 330. Again, as indicated by thebroken arrow connecting communication server 410 and web server 330,intermediate software modules may exist between communication server 410and web server 330. Web server 330 provides the event response to webbrowser client 104, and functional control module 106 updates persistentdashboard 130 with context information related to the incomingcommunication event. This context information may include, for example,the name of the customer initiating the telephone call or a chat usingcustomer interface 902. In action 4.6, functional control module 106provides notification of the incoming communication event tocommunication toolbar 110. Communication toolbar 110 then providesnotification of the communication event to the customer service agent,for example, by causing a button on communication toolbar 110 to blink.

FIG. 5 shows actions taken when updating the persistent dashboardoperating a search utility in conjunction with an outgoing communicationcommand, for example, by selecting a button of communication toolbar 110to receive an incoming chat. Issuing a communication command is similarto the agent-generated agent interface events described with referenceto FIG. 3, although other software modules, such as communication server410 of FIG. 4, are involved. In action 5.1, the customer service agentclicks an Accept Chat button (not shown) on communication toolbar 110 toaccept a chat. The resulting communication command produces a change incontext that is used to update persistent dashboard 130 and triggers asearch, as explained below with respect to FIG. 3, which updates baseview 140. Updating persistent dashboard 130 and base view 140 mayinvolve additional modules not shown, such as those of applicationserver 340 of FIG. 3, to perform searches and access application datarelated to the communication command. In action 5.2, functional controlmodule 106 determines the communication command to be issued. In action5.3, functional control module 106 provides the command to be issued toweb server 330. Web server 330 provides a chat initiation command tocommunication server 410 and additionally executes a search similar toactions 3.2-3.6 of FIG. 3. In action 5.4 a, functional control module106 updates persistent dashboard 130 with context information related tothe chat accepted. In action 5.4 b, functional control module 106updates base view 140 with a reference list 166 relating to the searchtriggered by chat acceptance. Communication server 410 then issues achat initiation command in action 5.6, via several intermediate softwaremodules (not shown), to media device 420.

FIG. 6 is a diagram of a layered architecture in which an embodiment ofthe search utility can be implemented and support the operationsdepicted in FIG. 3, FIG. 4 and FIG. 5. Application architecture 602includes user interface objects layer 610, business objects layer 620,and data objects layer 630. User interface objects layer 610 includesone or more user interface object definitions 612. An example of a userinterface object definition is a view definition for base view 140.Business objects layer 620 includes one or more business objectdefinitions 622. An example of a business object definition is a contactbusiness object definition, which is used to populate persistentdashboard 130 and customer information pane 162. Data objects layer 630includes one or more data object definitions 632. An example of a dataobject definition is a schema for a database table. Underlying databasearchitecture 604, which is used to store application data, includes adatabase management system (DBMS) 640 containing knowledge base 360.

FIG. 7 is a diagram of object layers and object definitions according tothe layered architecture of FIG. 6. User interface objects layer 610includes object definitions application 711, screen 713, view 715,applet 717, and control 719. As used herein, an application objectdefinition defines a collection of screens and does not define anapplication program. Application object definition 711 includes one ormore screens 713. Each screen 713 may contain one or more view 715. Aview presents one or more applets together at one time in a pre-definedvisual arrangement and logical data relationship. Each view 715 maycontain one or more applets 717. In the architecture of the presentinvention, the term applet is used to describe a form including one ormore fields and controls, and is distinguishable from the term appletwhen used to describe, for example, a Java® program referred to as aJava® applet. Each applet 717 may include one or more control 719.

Business objects layer 620 includes business object definition 722,business component definition 724, and field object definition 726. Eachbusiness object definition 722 can include one or more businesscomponent object definition 724. Each business component objectdefinition 724 may include one or more field object definition 726.

Data object layer 630 includes table object definition 732 and columnobject definition 734. Each table object definition 732 can include oneor more column object definition 734.

As shown in FIG. 7, view object definition 715 of user interface objectlayer 610 maps to business object definition 722 of business objectslayer 620. A mapping indicates a one-to-one relationship between objectsdefined according to the object definitions. For example, a contact viewof agent interface 102 displays data for a contact business object.

As noted above, a view may include one or more applets, and a businessobject may include one or more business components. Accordingly, appletsobject definition 717 of user interface object layer 610 maps tobusiness component object definition 724 of business objects layer 620.A particular applet, or form, of agent interface 102 includes data for aparticular business component. Furthermore, a business component, suchas business component 724, maps to an object definition, such as tableobject definition 732, of data objects layer 630. Consequently, aparticular applet displays data for a particular business component froma particular data table. In at least one embodiment, a “virtual”business component corresponds to a business component for which dataare not obtained from a single database table, but instead are theresult of a combination of joins with two or more database tables.

Control object definition 719 of user interface object layer 610 maps tofield object definition 726 of business objects layer 620. A particularcontrol within an applet corresponds to a field object definition.Furthermore, field object definition 726 maps to column objectdefinition 734 of data object layer 630. Data for a column of aparticular table corresponds to a field of the corresponding businesscomponent and is displayed within a control in a corresponding applet.

A search utility, such as knowledge base search window 160, can beimplemented as a separate frame and view below communication toolbar 110or as part of base view 140. Knowledge base search window 160 is basedon a virtual business component called “knowledge base search window”which lies in the instance of a “knowledge base search window” businessobject. Examples of object definitions related to a persistentdashboard, such as knowledge base search window 160, are given below:

-   -   Knowledge Base Search Window Business Object    -   Knowledge Base Search Window Business Component (virtual        business component)    -   Knowledge Base Search Window Business Service (controls the        functionality)    -   Knowledge Base Search Window Applet (user interface)    -   Knowledge Base Search Window View (user interface)

When updating knowledge base search window 160 from communicationtoolbar 110, a SmartScript response or an application program can use anUpdateKBSearch application program interface (API) for the KnowledgeBase Search Window Business Service. The UpdateKBSearch API can becalled using the InvokeMethod function of the Knowledge Base SearchWindow Business Service and passing a set of name/value pairs, such asthe following:

-   -   Source Name: ‘Base View’    -   BusComp Name: ‘UpdateKBSearch’    -   RowId: ‘referencelist’

In one embodiment, the InvokeMethod function of the Knowledge BaseSearch Window Business Service is used to call UpdateKBSearch API forconfigurable events. For example, an enterprise may define a customizedevent for which reference list 166 is updated and associate thecustomized event with a button on an applet within the agent interface.

Upon receiving the arguments, the invoked function of the Knowledge BaseSearch Window Business Service obtains the set of fields configured tobe displayed. The involved function then retrieves corresponding datafrom application databases and knowledge base 360, and populatesreference list 166.

In one embodiment, knowledge base search window 160 is configurable. Forexample, various agent interface changes can be made, such as changingthe color, size, location, and adding or removing fields from thedisplay window (applet) displaying knowledge base search window 160.

A search engine within the host application server is responsible forensuring that knowledge base search window 160 is updated whenever asearch occurs. In one embodiment, the search engine is implemented as asearch engine business service. The search engine business servicesprovides an application program interface (API) that includes a memberfunction to update knowledge base search window 160 within base view140. Member functions can correspond to a command definition for acommand to, for example, push search results to base view 140. TheUpdateKBSearch API may further include a command definition for amaintain command to maintain the context information for display inknowledge base search window 160 window until a second change in contextoccurs.

The communication administration views can be pre-configured to callInvokeMethod (with UpdateKBSearch as a parameter) when a communicationevent is received, such as an incoming chat. Variables are passed asarguments to update knowledge base search window 160. When InvokeMethodis called with the UpdateKBSearch parameter, the business service memberfunction UpdatefromCTI obtains the list of fields that are configured tobe displayed in knowledge base search window 160. Data to updateknowledge base search window 160 can be passed as parameters and/orqueried from appropriate application. Since the persistent dashboard isimplemented as a business service, a program calling knowledge basesearch window 160 may use a GetService (“KBSearch”) command. The programmay set up a control to either push information to knowledge base searchwindow 160 or pull information from knowledge base search window 160.

FIG. 8 depicts a block diagram of a computer system 810 suitable forimplementing the present invention. Computer system 810 includes a bus812 which interconnects major subsystems of computer system 810 such asa central processor 814, a system memory 816 (typically RAM, but whichmay also include ROM, flash RAM, or a similar computer-readable storagemedium), an input/output controller 818, an external audio device suchas a speaker system 820 via an audio output interface 822, an externaldevice such as a display screen 824 via display adapter 826, serialports 828 and 830, a keyboard 832 (interfaced with a keyboard controller833), a storage interface 834 for interfacing with a computer-readablestorage medium such as a floppy disk drive 836 operative to receive afloppy disk 838, and a CD-ROM drive 840 operative to receive a CD-ROM842. Also included are a mouse 846 (or other point-and-click device,coupled to bus 812 via serial port 828), a modem 847 (coupled to bus 812via serial (or USB) port 830) and a network interface 848 (coupleddirectly to bus 812).

Bus 812 allows data communication between central processor 814 andsystem memory 816, which may include both read only memory (ROM) orflash memory (neither shown), and random access memory (RAM) (notshown), as previously noted. The RAM is generally the main memory intowhich the operating system and application programs are loaded andtypically affords at least 816 megabytes of memory space. The ROM orflash memory may contain, among other code, the Basic Input-Outputsystem (BIOS) which controls basic hardware operation such as theinteraction with peripheral components. Applications resident withcomputer system 810 are generally stored on and accessed via a computerreadable storage medium, such as a hard disk drive (e.g., fixed disk844), an optical drive (e.g., CD-ROM or DVD drive 840), floppy disk unit836 or other storage medium.

Storage interface 834, as with the other storage interfaces of computersystem 810, may connect to a standard computer readable storage mediumfor storage and/or retrieval of information, such as a fixed disk drive844. Fixed disk drive 844 may be a part of computer system 810 or may beseparate and accessed through other interface systems. Many otherdevices can be connected such as a mouse 846 connected to bus 812 viaserial port 828, a modem 847 connected to bus 812 via serial port 830and a network interface 848 connected directly to bus 812. Modem 847 mayprovide a direct connection to a remote server via a telephone link orto the Internet via an internet service provider (ISP). Networkinterface 848 may provide a direct connection to a remote server via adirect network link to the Internet via a POP (point of presence).Network interface 848 may provide such connection using wirelesstechniques, including digital cellular telephone connection, CellularDigital Packet Data (CDPD) connection, digital satellite data connectionor the like.

Many other devices or subsystems (not shown) may be connected in asimilar manner (e.g., bar code readers, document scanners, digitalcameras and so on). Conversely, it is not necessary for all of thedevices shown in FIG. 8 to be present to practice the present invention.The devices and subsystems may be interconnected in different ways fromthat shown in FIG. 8. The operation of a computer system such as thatshown in FIG. 8 is readily known in the art and is not discussed indetail in this application. Code to implement the present invention maybe stored in computer-readable storage media such as one or more ofsystem memory 816, fixed disk 844, CD-ROM 842, or floppy disk 838.Additionally, computer system 810 may be any kind of computing device,and so includes personal data assistants (PDAs), network appliances,X-window terminals or other such computing devices. The operating systemprovided on computer system 810 may be MS-WINDOWS®, Mac OS 10®, UNIX®,Linux® or other known operating system. Computer system 810 alsosupports a number of Internet access tools, including, for example, anHTTP-compliant web browser having a JavaScript interpreter.

Moreover, regarding the messages and/or data signals described herein,those skilled in the art will recognize that a signal may be directlytransmitted from a first block to a second block, or a signal may bemodified (e.g., amplified, attenuated, delayed, latched, buffered,inverted, filtered or otherwise modified) between the blocks. Althoughthe signals of the above described embodiment are characterized astransmitted from one block to the next, other embodiments of the presentinvention may include modified signals in place of such directlytransmitted signals as long as the informational and/or functionalaspect of the signal is transmitted between blocks. To some extent, asignal input at a second block may be conceptualized as a second signalderived from a first signal output from a first block due to physicallimitations of the circuitry involved (e.g., there will inevitably besome attenuation and delay). Therefore, as used herein, a second signalderived from a first signal includes the first signal or anymodifications to the first signal, whether due to circuit limitations ordue to passage through other circuit elements which do not change theinformational and/or final functional aspect of the first signal.

The present invention is well adapted to attain the advantages mentionedas well as others inherent therein. While the present invention has beendepicted, described, and is defined by reference to particularembodiments of the invention, such references do not imply a limitationon the invention, and no such limitation is to be inferred. Theinvention is capable of considerable modification, alteration, andequivalents in form and function, as will occur to those ordinarilyskilled in the pertinent arts. The depicted and described embodimentsare examples only, and are not exhaustive of the scope of the invention.

The foregoing described embodiments include components contained withinother components. It is to be understood that such architectures aremerely examples, and that in fact many other architectures can beimplemented which achieve the same functionality. In an abstract butstill definite sense, any arrangement of components to achieve the samefunctionality is effectively “associated” such that the desiredfunctionality is achieved. Hence, any two components herein combined toachieve a particular functionality can be seen as “associated with” eachother such that the desired functionality is achieved, irrespective ofarchitectures or intermediate components. Likewise, any two componentsso associated can also be viewed as being “operably connected,” or“operably coupled,” to each other to achieve the desired functionality.

The foregoing detailed description has set forth various embodiments ofthe present invention via the use of block diagrams, flowcharts, andexamples. It will be understood by those within the art that each blockdiagram component, flowchart step, operation and/or componentillustrated by the use of examples can be implemented, individuallyand/or collectively, by a wide range of hardware, software, firmware, orany combination thereof.

The present invention has been described in the context of fullyfunctional computer systems; however, those skilled in the art willappreciate that the present invention is capable of being distributed asa program product in a variety of forms, and that the present inventionapplies equally regardless of the particular type of media used toactually carry out the distribution. Examples of signal bearing mediainclude recordable media such as floppy disks and CD-ROM, as well asmedia storage and distribution systems developed in the future.

The above-discussed embodiments may be implemented by software modulesthat perform certain tasks. The software modules discussed herein mayinclude script, batch, or other executable files. The software modulesmay be stored on a machine-readable or computer-readable storage mediumsuch as a disk drive. Storage devices used for storing software modulesin accordance with an embodiment of the invention may be magnetic floppydisks, hard disks, or optical discs such as CD-ROMs or CD-Rs, forexample. A storage device used for storing firmware or hardware modulesin accordance with an embodiment of the invention may also include asemiconductor-based memory, which may be permanently, removably orremotely coupled to a microprocessor/memory system. Thus, the modulesmay be stored within a computer system memory to configure the computersystem to perform the functions of the module. Other new and varioustypes of computer-readable storage media may be used to store themodules discussed herein.

The above description is intended to be illustrative of the inventionand should not be taken to be limiting. Other embodiments within thescope of the present invention are possible. Those skilled in the artwill readily implement the steps necessary to provide the structures andthe methods disclosed herein, and will understand that the processparameters and sequence of steps are given by way of example only andcan be varied to achieve the desired structure as well as modificationsthat are within the scope of the invention. Variations and modificationsof the embodiments disclosed herein can be made based on the descriptionset forth herein, without departing from the scope of the invention.Consequently, the invention is intended to be limited only by the scopeof the appended claims, giving full cognizance to equivalents in allrespects.

Although the invention has been described in connection with severalembodiments, the invention is not intended to be limited to the specificforms set forth herein. On the contrary, it is intended to cover suchalternatives, modifications, and equivalents as can be reasonablyincluded within the scope of the invention as defined by the appendedclaims.

1. (canceled)
 2. A method, comprising: detecting selection by a customerservice agent of a portion of a set of information displayed in an agentgraphical user interface, wherein the set of information is related to acommunication session between the customer service agent and a customer;detecting actuation by the customer service agent of a selection searchrequest button within the agent graphical user interface; in response todetecting actuation, implementing a search of a knowledge base for theportion of the set of information; and providing a result of the searchfor display in the agent graphical user interface.
 3. The method ofclaim 2, wherein: the portion of the set of information comprisesinformation displayed within a chat session window of the agentgraphical user interface.
 4. The method of claim 2, wherein: the set ofinformation comprises text characters.
 5. The method of claim 2, furthercomprising: detecting selection by the customer service agent of anadditional portion of the set of information displayed in the agentgraphical user interface; detecting an additional actuation by thecustomer service agent of the selection search request button within theagent graphical user interface; in response to detecting an additionalactuation, implementing an additional search of the knowledge base forthe additional portion of the set of information; and providing a resultof the additional search for display by the agent graphical userinterface.
 6. The method of claim 2, wherein: the selection by thecustomer service agent of the portion of the set of information isindicated in the agent graphical user interface as a highlighting of theselected portion of the set of information.
 7. The method of claim 3,wherein: the selection search request button is displayed within thechat session window of the agent graphical user interface.
 8. The methodof claim 2, wherein implementing a search comprises: requesting thesearch; and receiving the result of the search.
 9. The method of claim8, wherein: requesting the search comprises requesting the search froman application server.
 10. The method of claim 8, wherein: requestingthe search comprises logging a request for the search.
 11. Anon-transitory computer-readable storage medium containing programinstructions configured to, when executed by a processor, perform amethod comprising: detecting selection by a customer service agent of aportion of a set of information displayed in an agent graphical userinterface, wherein the set of information is related to a communicationsession between the customer service agent and a customer; detectingactuation by the customer service agent of a selection search requestbutton within the agent graphical user interface; in response todetecting actuation, implementing a search of a knowledge base for theportion of the set of information; and providing a result of the searchfor display in the agent graphical user interface.
 12. The storagemedium of claim 11, wherein: the portion of the set of informationcomprises information displayed within a chat session window of theagent graphical user interface.
 13. The storage medium of claim 11,wherein the program instructions are further configured to, whenexecuted by a processor, perform a method comprising: detectingselection by the customer service agent of an additional portion of theset of information displayed by the agent graphical user interface;detecting an additional actuation by the customer service agent of theselection search request button within the agent graphical userinterface; in response to detecting an additional actuation,implementing an additional search of the knowledge base for theadditional portion of the set of information; and providing a result ofthe additional search for display by the agent graphical user interface.14. The storage medium of claim 11, wherein: the selection by thecustomer service agent of the portion of the set of information isindicated in the agent graphical user interface as a highlighting of theselected portion of the set of information.
 15. The storage medium ofclaim 12, wherein: the selection search request button is displayedwithin the chat session window of the agent graphical user interface.16. The storage medium of claim 11, wherein implementing a searchcomprises: requesting the search; and receiving the result of thesearch.
 17. An apparatus comprising: an application server comprising afunctional control module, wherein the functional control module isoperably coupled to an agent graphical user interface configured forpresentation on a client computer, and the functional control module isconfigured to detect selection by a customer service agent of a portionof a set of information displayed in the agent graphical user interface,detect actuation by the customer service agent of a selection searchrequest button within the agent graphical user interface, in response todetecting actuation of the selection search request button, send to theapplication server a request for a search of a knowledge base for theportion of the set of information, and provide a result of the searchfor display in the agent graphical user interface.
 18. The apparatus ofclaim 17, wherein: the portion of the set of information comprisesinformation displayed within a chat session window of the agentgraphical user interface.
 19. The apparatus of claim 18, wherein: theselection search request button is displayed within the chat sessionwindow of the agent graphical user interface.
 20. The apparatus of claim17, wherein the functional control module is further configured to:detect selection by the customer service agent of an additional portionof the set of information displayed in the agent graphical userinterface; detect an additional actuation by the customer service agentof the selection search request button within the agent graphical userinterface; in response to detecting an additional actuation, request anadditional search of the knowledge base for the additional portion ofthe set of information; and provide a result of the additional searchfor display by the agent graphical user interface.
 21. The apparatus ofclaim 17, wherein: the set of information is related to a communicationsession between the customer service agent and a customer.